MQTT的傳送模式相信大家都不陌生了,接下來要講解的是MQTT的QoS以及相關的安全性問題,總是有些內容不想被竊聽吧!那就跟著本篇看下去囉!
MQTT上的QoS指的並不是流量管制,而是Publisher是否確定一定把東西傳送至subscriber上,完成一次傳輸,而QoS則分三個等級:
0
:Publisher所送出的內容不一定保證每次都會傳送至Broker上,類似博士論文交給學校,但學校可能沒好好交給學校的圖書館那樣,這種模式適用於傳送大量且即時的資訊(比較不注重歷史紀錄的內容),例如即時監測房間的溫濕度。1
:Publisher確實把內容送至Broker上,但不管是不是有把東西傳送至subscriber上,適合用於重複傳送也沒差,但是一定要傳送出去的資訊,例如房間的門被打開了,房間的門被關起來了這種感應器2
:Publisher確實把內容傳送至subscriber上,且確定傳送一次,適合用於很重要很重要很重要,很重要所以說三次的很重要的資訊上,例如畢業證書,只發一次,不能重複發(重複發的那個叫做畢業證明書)MQTT的帳號密碼設定放置於/etc/mosquitto/mosquitto.conf
上設定,以下為預設設定檔
# Place your local configuration in /etc/mosquitto/conf.d/
#
# A full description of the configuration file is at
# /usr/share/doc/mosquitto/examples/mosquitto.conf.example
pid_file /var/run/mosquitto.pid
persistence true
persistence_location /var/lib/mosquitto/
log_dest file /var/log/mosquitto/mosquitto.log
include_dir /etc/mosquitto/conf.d
加入這幾行
allow_anonymous false
password_file /etc/mosquitto/pwfile
acl_file /etc/mosquitto/aclfile
allow_anonymous
指的是匿名存取,也就是不用帳號密碼password_file
指的是帳號密碼的檔案acl_file
指的是可以存取哪一個topic
使用mosquitto_passwd -c /etc/mosquitto/pwfile username
會生成一個pwfile
然後覆蓋掉之前的pwfile
,詳情請用mosquitto_passwd --help
aclfile則可以這樣做vim /etc/mosquitto/aclfile
然後輸入
user username
topic read mtopic/#
user username
topic write mtopic/#
這樣就代表username
可以寫入
以及讀取
mtopic
底下所有的東西,這樣就可以管理好哪一個使用者有什麼權限讀取哪一個佈告欄,哪一個使用者有權限寫入佈告欄囉!